package com.lyj.sc.dynamicProgramming;

/**
 * @Author: liyangjing
 * @Date: 2022/06/28/21:54
 * @Description:
 */
public class butonglujing2 {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        //1.定义dp数z组
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
        int[][] dp = new int[m][n];
        //2.确定递推公式
        //dp[i][j]=dp[i-1][j]+dp[i][j-1];
        //3.初始化
        for(int i=0;i<m;i++){
            if(obstacleGrid[i][0]==1) break;
            dp[i][0]=1;
        }
        for(int i=0;i<n;i++){
            if(obstacleGrid[0][i]==1) break;
            dp[0][i]=1;
        }
        //4.遍历循环
        for(int i=1;i<m;i++){
            for(int j=1;j<n;j++){
                if(obstacleGrid[i][j]==1) continue;
                dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
}
